home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Skunkware 5
/
Skunkware 5.iso
/
man
/
cat.3
/
CrtPipelin.3
< prev
next >
Wrap
Text File
|
1995-07-25
|
12KB
|
199 lines
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee((((3333)))) TTTTccccllll (((( )))) TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee((((3333))))
_________________________________________________________________
NNNNAAAAMMMMEEEE
Tcl_CreatePipeline - create one or more child processes,
with I/O redirection
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
####iiiinnnncccclllluuuuddddeeee <<<<ttttccccllll....hhhh>>>>
int
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee(_i_n_t_e_r_p, _a_r_g_c, _a_r_g_v, _p_i_d_A_r_r_a_y_P_t_r, _i_n_P_i_p_e_P_t_r, _o_u_t_P_i_p_e_P_t_r, _e_r_r_F_i_l_e_P_t_r)
AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
Tcl_Interp *_i_n_t_e_r_p (in) Interpreter to use
for error reporting.
int _a_r_g_c (in) Number of strings in
_a_r_g_v array.
char **_a_r_g_v (in) Array of strings
describing command(s)
and I/O redirection.
int **_p_i_d_A_r_r_a_y_P_t_r (out) The value at
*_p_i_d_A_r_r_a_y_P_t_r is
modified to hold a
pointer to an array
of process
identifiers. The
array is dynamically
allocated and must be
freed by the caller.
int *_i_n_P_i_p_e_P_t_r (out) If this argument is
NULL then standard
input for the first
command in the
pipeline comes from
the current standard
input. If _i_n_P_i_p_e_P_t_r
is not NULL then
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee
will create a pipe,
arrange for it to be
used for standard
input to the first
command, and store a
file id for writing
to that pipe at
*_i_n_P_i_p_e_P_t_r. If the
command specified its
own input using
Page 1 (printed 7/10/95)
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee((((3333)))) TTTTccccllll (((( )))) TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee((((3333))))
redirection, then no
pipe is created and
-1 is stored at
*_i_n_P_i_p_e_P_t_r.
int *_o_u_t_P_i_p_e_P_t_r (out) If this argument is
NULL then standard
output for the last
command in the
pipeline goes to the
current standard
output. If
_o_u_t_P_i_p_e_P_t_r is not
NULL then
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee
will create a pipe,
arrange for it to be
used for standard
output from the last
command, and store a
file id for reading
from that pipe at
*_o_u_t_P_i_p_e_P_t_r. If the
command specified its
own output using
redirection then no
pipe is created and
-1 is stored at
*_o_u_t_P_i_p_e_P_t_r.
int *_e_r_r_F_i_l_e_P_t_r (out) If this argument is
NULL then error
output for all the
commands in the
pipeline will go to
the current standard
error file. If
_e_r_r_F_i_l_e_P_t_r is not
NULL, error output
from all the commands
in the pipeline will
go to a temporary
file created by
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee.
A file id to read
from that file will
be stored at
*_e_r_r_F_i_l_e_P_t_r. The
file will already
have been removed, so
closing the file
descriptor at
Page 2 (printed 7/10/95)
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee((((3333)))) TTTTccccllll (((( )))) TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee((((3333))))
*_e_r_r_F_i_l_e_P_t_r will
cause the file to be
flushed completely.
_________________________________________________________________
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee processes the _a_r_g_v array and sets up one
or more child processes in a pipeline configuration.
TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee handles pipes specified with ``|'', input
redirection specified with ``<'' or ``<<'', and output
redirection specified with ``>''; see the documentation for
the eeeexxxxeeeecccc command for details on these specifications. The
return value from TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee is a count of the
number of child processes created; the process identifiers
for those processes are stored in a _m_a_l_l_o_c-ed array and a
pointer to that array is stored at *_p_i_d_A_r_r_a_y_P_t_r. It is the
caller's responsibility to free the array when finished with
it.
If the _i_n_P_i_p_e_P_t_r, _o_u_t_P_i_p_e_P_t_r, and _e_r_r_F_i_l_e_P_t_r arguments are
NULL then the pipeline's standard input, standard output,
and standard error are taken from the corresponding streams
of the process. Non-NULL values may be specified for these
arguments to use pipes for standard input and standard
output and a file for standard error. TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee
will create the requested pipes or file and return file
identifiers that may be used to read or write them. It is
the caller's responsibility to close all of these files when
they are no longer needed. If _a_r_g_v specifies redirection
for standard input or standard output, then pipes will not
be created even if requested by the _i_n_P_i_p_e_P_t_r and _o_u_t_P_i_p_e_P_t_r
arguments.
If an error occurs in TTTTccccllll____CCCCrrrreeeeaaaatttteeeePPPPiiiippppeeeelllliiiinnnneeee (e.g. ``|'' or
``<'' was the last argument in _a_r_g_v, or it wasn't possible
to fork off a child), then -1 is returned and _i_n_t_e_r_p->_r_e_s_u_l_t
is set to an error message.
SSSSEEEEEEEE AAAALLLLSSSSOOOO
TTTTccccllll____DDDDeeeettttaaaacccchhhhPPPPiiiiddddssss, TTTTccccllll____RRRReeeeaaaappppDDDDeeeettttaaaacccchhhheeeeddddPPPPrrrrooooccccssss
KKKKEEEEYYYYWWWWOOOORRRRDDDDSSSS
background, child, detach, fork, process, status, wait
Page 3 (printed 7/10/95)